home *** CD-ROM | disk | FTP | other *** search
/ Aminet 38 / Aminet 38 (2000)(Schatztruhe)[!][Aug 2000].iso / Aminet / misc / math / libalgo.lha / algomath / src / extdigx.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-05-30  |  732 b   |  57 lines

  1. /* extract a digit d of a number n*/
  2.  
  3. #include "defs.h"
  4.  
  5. int am_extract(int n, int d)
  6. {
  7.     int i;
  8.     int j = 0;
  9.  
  10.  
  11.     if(n>999999999)
  12.         return n;
  13.     if(d<0)
  14.         d = -d;
  15.     if(d>9){
  16.         for(i = 0; i < 9; i++)
  17.             while(d >= _am_asciiconv[i])
  18.                 d -= _am_asciiconv[i];
  19.         while(d >= _am_asciiconv[i])
  20.         {
  21.             d -= _am_asciiconv[i];
  22.             j++;
  23.         }
  24.  
  25.         d=j;
  26.         j=0;
  27.     }
  28.         
  29.  
  30.     if(n<0){
  31.         n = -n;
  32.  
  33.         for(i = 0; i < 10 - d; i++)
  34.             while(n >= _am_asciiconv[i])
  35.                 n -= _am_asciiconv[i];
  36.         while(n >= _am_asciiconv[i])
  37.         {
  38.             n -= _am_asciiconv[i];
  39.             j++;
  40.         }
  41.  
  42.     return -j;
  43.     }
  44.     else{
  45.         for(i = 0; i < 10 - d; i++)
  46.             while(n >= _am_asciiconv[i])
  47.                 n -= _am_asciiconv[i];
  48.         while(n >= _am_asciiconv[i])
  49.         {
  50.             n -= _am_asciiconv[i];
  51.             j++;
  52.         }
  53.  
  54.     return j;
  55.     }
  56. }
  57.